package api;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import domain.User;
import exception.LoginException;
import service.UserServlet;
import utils.GetRequestJsonUtils;
import utils.Response;
import utils.ResponseCode;

import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.io.IOException;

public class loginServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //第一步：提取参数，
        System.out.println("login");
        JSONObject object = GetRequestJsonUtils.getRequestJsonObject(req);
        String user_str = object.getString("user");
        // 第二步：转换参数成java对象；
        User user = JSON.parseObject(user_str, User.class);
        // 第三步：去查询数据库表中是否有这个记录；
        UserServlet userServlet = new UserServlet();
        Response build=null;
        try {
            userServlet.login(user);//登录成功,返回成功消息
            //创建一个session,该session对象是这个请求对应浏览器独有
            HttpSession session=req.getSession();
            session.setAttribute("user",user);
            Cookie cookie=new Cookie("JSESSIONID",session.getId());
            resp.addCookie(cookie);
            build = Response.build(ResponseCode.SUCCESS);
        } catch (LoginException e) {//登录异常，返回异常消息
            e.printStackTrace();
             build = Response.build(e.getError());
        }
        //第四步：判断为空，则返回登录失败的消息，。。。。；
        //第五步：把消息对象转换成字符串，返回浏览器
        resp.setContentType("application/json;charset=utf-8");
        resp.getWriter().write(JSON.toJSON(build).toString());
    }
}
